iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 9
0
DevOps

Hashicorp 0 到 0.003系列 第 9

Day 9. Consul Service Health Check

  • 分享至 

  • xImage
  •  

有沒有做完上版後,被罵沒檢查就放流量? 有沒有服務上線出事後,都是user反映才知道?
有了Service Discovery 怎麼能夠少了 Service Health Check 的功能呢?

所以今天會來介紹Service Health Check, 不過昨天你們有觀察到service status 是正常的綠燈嗎?即使Nginx停下來也是綠燈,如果有仔細去看它health check的內容寫著是Agent alive and reachable, 意思是這個Consul client是活著的可以連的到,沒辦法確認服務是正常的。

Health Check Definition

檢查的方法一共有7種:

  • Script + Interval: 可以撰寫script, 加上設定每間格多久做一次check, 但是exit code有規定的格式。

    • Exit code 0 - Check is passing
    • Exit code 1 - Check is warning
    • Any other code - Check is failing
  • HTTP + Interval: 透過HTTP GET取得http response code, 2XX表示passing,429 Too ManyRequests is warning,其他表示failing。

  • TCP + Interval: 透過TCP連結到指定的IP:Port, 檢查是否連接成功。

  • Time to Live (TTL): 在TTL時間內,應用程式需主動送GET request到agent http endpoint, 如果agent http endpoint,在TTL時間內未報觸發就會視為critical state.

  • Docker + Interval: 可以指定container id,針對特定的container做檢查。

  • gRPC + Interval: 支援gRPC health checking protocol.

  • Alias: 使用在當有兩個service有關聯時,可以使用alias來做檢測。

加入Halth Check

在我們昨天的web-service.hcl裡加入check

service {
  name = "ithome-web"
  tags = ["web","http"]
  port = 80
  token = "1d177b09-4528-bdb0-e5b0-e61ab7aa140a"
  checks =  [{
    name = "ithome-check"
    http = "http://10.168.1.189/index.htm"
    interval = "3s"
    timeout = "1s"
  },
  {
     name = "Check 80 port"
     tcp = "10.168.1.189:80"
     interval = "6s"
     timeout = "3s"
  }
 ]
}

這裡我加入了兩個check,分別是HTTP與TCP, "ithome-check"檢查我的首頁,"Check 80 port" 檢查80 port,
再執行consul reload重新載入設定。
查看結果
https://ithelp.ithome.com.tw/upload/images/20200909/20129223mVQdjfgZC4.png
https://ithelp.ithome.com.tw/upload/images/20200909/20129223VmWHCabEfE.png

小作業

大家可以去把其中一台的Nginx停下來,查看health check是否有生效,
再去做dig @10.168.1.175 -p 8600 ithome-web.service.consul查看結果。


上一篇
Day 8. Consul Service Discovery
下一篇
Day 10. Backup Consul Data and State
系列文
Hashicorp 0 到 0.00330
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言